Consolidates the Chat frame from A Master Core v1, the 200% proof from A Master Proofs v1, and the confirmed Quick Actions sheet into one current file, with the later context-disclosure fixes folded in. Direction A is unchanged: this corrects and unifies, it does not re-style. Every frame below is a live instance of one shared device component, so state, locale, theme and type size are runtime, not redrawn.
Which session is this, does it need me, what happened, what can I send. The zone order answers them in that order and nothing else competes for the top of the screen.
Collapsed is two wrapping lines of real facts on one 48 pt target. Expanded groups identity and location, keeps the full path copyable and wrapping, and pins Session info below the scrolling body so it can never hide.
Approval, Answer, Failure, Running — in that order, one at a time. Streaming under a higher state is a subordinate qualifier, never a second headline. Idle has no block at all.
List-first transcript with quiet source labels, hairline tool bands, two-layer composer, and the confirmed Quick Actions sheet reached from the only top-right action. No bubbles, cards, gradients or new navigation.
Title Review relay reconnect handling, agent Claude, mode Ask every time, model fable, computer MacBook-Pro, folder cc-pocket. Session stack and context occupancy render only because these fixtures supply values; omit the props and the chips disappear rather than showing zero. No timestamp, duration, branch or health value exists anywhere in this file.
Context collapsed to two lines of real facts, no state block because nothing is pending, composer idle with the microphone. This is the reading state the design is tuned for.
Identity and location grouped, origin omitted because none is supplied, full path wrapping with its own copy target, Session info pinned under the body. At 100% type nothing here needs an inner scroll.
Running leads, the last agent turn is still streaming, and a typed draft puts Stop and Send side by side. The queue explanation is written above the row, not implied by the button.
Approval leads with the literal ask title; Running drops to a subordinate qualifier. No Review button here — the approval sheet owns that decision.
The QuestionCard docks above the bottom area and owns its inputs, so the composer steps aside and says why in one line rather than disappearing silently.
The pinned label is the localized Failure label and nothing else — ChatStateUi supplies no detail string for this state, so none is shown. The typed draft and Send stay visible: a gated send returns false and preserves the draft rather than clearing the field.
The entry-point proof: the confirmed v1 hierarchy of four groups with Handoff as an ordinary peer row and no NEW badge. Interaction stays owned by Chat Quick Actions Master v1.
Three-line title clear of the overflow, deep path wrapping without ellipsis, a long ripgrep command wrapping inside its hairline band, and the origin row present because this fixture supplies one.
At 402 × 874 rows grow to 58 pt and the facts body scrolls, while Session info, the transcript and the whole composer stay reachable. Nothing shrank to make this fit.
English against frame 01's Chinese: identical geometry, identical group structure, only the fixed grammar changes. Model, machine and path stay literal in both.
Placeholder names the real active agent. Right slot is the microphone.
Any typed content or ready attachment promotes the right slot to Send.
Streaming with an empty field renders Stop alone; no other action occupies the slot.
Stop and Send coexist. Send queues behind the running turn, and says so.
Send is muted with progress; sending waits for the upload to finish.
Recording replaces the field per existing behaviour and adds no new route.
Approval and Answer come from a real pending request and may print its literal title over three lines. Failure renders the localized Failure label alone; ChatStateUi supplies no detail string, so no cause, banner or recovery wording appears. Running comes only from the streaming fact. Idle renders no block, and there is no Complete state — a finished session simply reads as its transcript. The block never repeats a Review or Answer button that the approval sheet or QuestionCard already owns.
Back, overflow, disclosure, machine switch, path copy, Session info and every composer control are named targets of at least 48 pt, including the 30 pt model and context chips. Disclosure exposes expanded and collapsed. Copy success is written, not just tinted. The state block is a status region whose label carries the state name, so shape and color stay supplementary. At 200% type rows grow and wrap; nothing shrinks and there is no horizontal scroll.
At 200% type with context expanded, the facts and path body scrolls internally, as specified — Session info and the composer stay pinned and reachable, but the transcript behind the expanded panel is reduced to a few lines. The panel is bounded rather than full-height, so it remains a disclosure and never becomes a page. If review prefers more transcript at that size, the next lever is a shorter bound on the facts body, not smaller type.